/*
 * Licensed to the Tai Ping Jin Ke
 *
 * Copyright (c) 2022 .
 * All rights reserved.
 * 项目名称：呼叫中心-系统通用工具封装层
 * 版权说明：本软件属太平金融科技服务(上海)有限公司所有，在未获得太平金融科技服务(上海)有限公司正式授权情况下，任何企业和个人，不能获取、阅读、安装、传播本软件涉及的任何受知识产权保护的内容。
 */
package com.taiping.cc.application.support;

import cn.hutool.json.JSONObject;
import com.taiping.cc.application.constant.exception.ErrorStatusEnum;
import com.taiping.dlt.pojo.bo.AuthLoginBO;
import com.taipingframework.json.JacksonHelper;
import com.taipingframework.utility.exception.SystemInterrupterException;

public interface GenericTools {

    /**
     * 将当前会话对象的属性值转换为 AuthLoginBO 类型
     */
    static AuthLoginBO convertAuthLoginFromObject(Object currentUserAttribute) {
        if (currentUserAttribute == null) {
            throw new SystemInterrupterException(ErrorStatusEnum.UNABLE_GET_CURRENT_SESSION_DATA);
        }
        if (currentUserAttribute instanceof AuthLoginBO) {
            return (AuthLoginBO) currentUserAttribute;
        }
        if (currentUserAttribute instanceof CharSequence) {
            String currentUserInfo = ((CharSequence) currentUserAttribute).toString();
            return JacksonHelper.from(currentUserInfo, AuthLoginBO.class);
        }
        if (currentUserAttribute instanceof JSONObject) {
            return JacksonHelper.from(String.valueOf(currentUserAttribute), AuthLoginBO.class);
        }
        throw new SystemInterrupterException(ErrorStatusEnum.UNABLE_GET_CURRENT_SESSION_USER);
    }

}
